/*
 * https://github.com/mpv-player/mpv/blob/master/libmpv/client.h
 * int mpv_set_property(mpv_handle *ctx, const char *name, mpv_format format,
 *                      void *data);
 * Set a property to a given value. Properties are essentially variables which
 * can be queried or set at runtime. For example, writing to the pause property
 * will actually pause or unpause playback.
 */

/**
 * TODO reload config (?)
 * Disconnect and destroy the mpv_handle. ctx will be deallocated with this
 * API call. This leaves the player running. If you want to be sure that the
 * player is terminated, send a "quit" command, and wait until the
 * MPV_EVENT_SHUTDOWN event is received, or use mpv_terminate_destroy().
 */
/* void mpv_detach_destroy(mpv_handle *ctx);
 */

/**
 * TODO perhaps use this instead of … I'm too lazy to type.
 * Load a config file. This loads and parses the file, and sets every entry in
 * the config file's default section as if mpv_set_option_string() is called.
 *
 * The filename should be an absolute path. If it isn't, the actual path used
 * is unspecified. (Note: an absolute path starts with '/' on UNIX.) If the
 * file wasn't found, MPV_ERROR_INVALID_PARAMETER is returned.
 *
 * If a fatal error happens when parsing a config file, MPV_ERROR_OPTION_ERROR
 * is returned. Errors when setting options as well as other types or errors
 * are ignored (even if options do not exist). You can still try to capture
 * the resulting error messages with mpv_request_log_messages(). Note that it's
 * possible that some options were successfully set even if any of these errors
 * happen.
 *
 * @param filename absolute path to the config file on the local filesystem
 * @return error code
 */
/* int mpv_load_config_file(mpv_handle *ctx, const char *filename);
 */

extern mpv_handle *ctx;

int libmpv_init(void);
int libmpv_play(char *file);
int libmpv_queue(char *file);
int libmpv_next(void);
int libmpv_prev(void);
int libmpv_stop(void);
int libmpv_keypress(char *);

int libmpv_event_file_loaded(void);
